iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 6
0

GCDWebServer 是一個基於 GCD 的輕量級服務器框架,用於內嵌到 MacOS 或者 iOS 系統的應用中提供 HTTP1.1 的服務。使用 GCDWebServer 我們可以很輕鬆的在我們的應用中搭建一個 HTTP 服務器,讓用戶可以通過瀏覽器訪問我們應用中的數據。

官方網址

1.特點

  • 設計優雅,易於使用。僅僅包含4個核心類:server, connection, request 和 response
  • 設計良好的 API。頭文件註釋齊全,非常易於繼承和定制個性化需求。
  • 事件驅動模型。基於 GCD 框架,實現最佳性能和並發。
  • 符合新的 BSD 許可協議。

2.支持功能

  • 針對 http 請求,支持完全異步處理
  • 針對較大 HTTP 請求和響應流,採用內存最優化策略
  • 支持解析使用"application/x-www-form-urlencoded" 或者 "multipart/form-data"編碼格式提交的 html 表單
  • 支持對 json 格式的請求或響應進行解析和序列化
  • HTTP 請求或響應採用分塊傳輸編碼
  • HTTP 請求和響應採用 gzip 方式壓縮
  • 對本地文件的請求支持多種 HTTP 類型
  • 採用通用、簡單的密碼保護訪問認證機制
  • 支持在 app 前台、後台或掛起時自動處理事務
  • 完全支持 ipv4 和 ipv6
  • 支持文件上傳功能。提供通過瀏覽器實現文件上傳和下載的接口。 (GCDWebUploader -> GCDWebServer)
  • 支持文件系統服務。 DAV 不僅被看作 HTTP 的擴展,甚至被看作一種網絡文件系統。 (GCDWebDAVServer -> GCDWebServer)
  1. 不支持功能
  • 長連接
  • https 請求

cocoaPods 導入框架

pod "GCDWebServer", "~> 3.0"
pod "GCDWebServer/WebUploader", "~> 3.0"
pod "GCDWebServer/WebDAV", "~> 3.0"

建立一個簡單的HTTP服務器

下面程式碼啟動後會產生一個HTTP伺服器,端口8080。當訪問這個服務時,會回傳一個歡迎信息的Html頁面。

import UIKit
import GCDWebServer
class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let webServer = GCDWebServer()
        
         webServer.addDefaultHandler(forMethod: "GET", request: GCDWebServerRequest.self, processBlock: { (request) -> GCDWebServerResponse? in
            
            let html = "<html><body>Hello World</body></html>"
            return GCDWebServerDataResponse(html: html)
        })
        
        webServer.start(withPort: 8080, bonjourName: "GCD Web Server")
    }
}

用模擬器啟動後,使用電腦瀏覽器訪問本地ip 127.0.0.1:8080就可以看到結果了。
https://ithelp.ithome.com.tw/upload/images/20200904/20129678Rnd97QfMYa.png


上一篇
(Day5)(xcode11)使用SPM安裝第三方套件
下一篇
(Day7)在App增加Google Sign In 功能
系列文
IOS 基本元件運用和套件運用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言